package com.example.project.entity;

import java.util.Date;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import com.example.project.annotation.Excel;
import com.example.project.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;

/**
 * 项目对象 t_projects
 * 
 * @author ruoyi
 * @date 2025-09-15
 */
public class Project extends BaseEntity {
	
	private static final long serialVersionUID = 1L;

	/** 主键ID */
	private Long id;

	/** 项目名称 */
	@Excel(name = "项目名称")
	private String name;

	/** 客户名称 */
	@Excel(name = "客户名称")
	private String customerName;

	/** 项目描述 */
	@Excel(name = "项目描述")
	private String description;

	/** 状态 */
	@Excel(name = "状态")
	private Integer state;

	/** 项目主页 */
	@Excel(name = "项目主页")
	private String homepage;

	/** 项目标识 */
	@Excel(name = "项目标识")
	private String identifier;

	/** 颜色标识 */
	@Excel(name = "颜色标识")
	private String color;

	/** 客户信息 */
	@Excel(name = "客户信息")
	private String customerDetail;

	/** 运营类型 */
	@Excel(name = "运营类型")
	private Integer operationType;

	/** Git信息 */
	@Excel(name = "Git信息")
	private String gitUrl;

	/** 服务器信息 */
	@Excel(name = "服务器信息")
	private String serverDetail;

	/** 域名 */
	@Excel(name = "域名")
	private String domain;

	/** 后台域名 */
	@Excel(name = "后台域名")
	private String adminDomain;

	/** 静态域名 */
	@Excel(name = "静态域名")
	private String htmlDomain;

	/** 签约日期 */
	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
	@Excel(name = "签约日期", width = 30, dateFormat = "yyyy-MM-dd")
	private Date signDate;

	/** 到期日期 */
	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
	@Excel(name = "到期日期", width = 30, dateFormat = "yyyy-MM-dd")
	private Date expirDate;

	/** 服务器到期日期 */
	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
	@Excel(name = "服务器到期日期", width = 30, dateFormat = "yyyy-MM-dd")
	private Date serverExpirDate;

	/** 签约信息 */
	@Excel(name = "签约信息")
	private String signDetail;

	/** 语言类型 */
	@Excel(name = "语言类型")
	private String developLanguage;

	/** 项目负责人 */
	@Excel(name = "项目负责人")
	private Long projectLeader;
	
	private String projectLeaderName;

	/** 删除标志（0代表存在 2代表删除） */
	private String delFlag;

	public void setId(Long id) {
		this.id = id;
	}

	public Long getId() {
		return id;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setCustomerName(String customerName) {
		this.customerName = customerName;
	}

	public String getCustomerName() {
		return customerName;
	}

	public void setDescription(String description) {
		this.description = description;
	}

	public String getDescription() {
		return description;
	}

	public void setState(Integer state) {
		this.state = state;
	}

	public Integer getState() {
		return state;
	}

	public void setHomepage(String homepage) {
		this.homepage = homepage;
	}

	public String getHomepage() {
		return homepage;
	}

	public void setIdentifier(String identifier) {
		this.identifier = identifier;
	}

	public String getIdentifier() {
		return identifier;
	}

	public void setColor(String color) {
		this.color = color;
	}

	public String getColor() {
		return color;
	}

	public void setCustomerDetail(String customerDetail) {
		this.customerDetail = customerDetail;
	}

	public String getCustomerDetail() {
		return customerDetail;
	}

	public void setOperationType(Integer operationType) {
		this.operationType = operationType;
	}

	public Integer getOperationType() {
		return operationType;
	}

	public void setGitUrl(String gitUrl) {
		this.gitUrl = gitUrl;
	}

	public String getGitUrl() {
		return gitUrl;
	}

	public void setServerDetail(String serverDetail) {
		this.serverDetail = serverDetail;
	}

	public String getServerDetail() {
		return serverDetail;
	}

	public void setDomain(String domain) {
		this.domain = domain;
	}

	public String getDomain() {
		return domain;
	}

	public void setAdminDomain(String adminDomain) {
		this.adminDomain = adminDomain;
	}

	public String getAdminDomain() {
		return adminDomain;
	}

	public void setHtmlDomain(String htmlDomain) {
		this.htmlDomain = htmlDomain;
	}

	public String getHtmlDomain() {
		return htmlDomain;
	}

	public void setSignDate(Date signDate) {
		this.signDate = signDate;
	}

	public Date getSignDate() {
		return signDate;
	}

	public void setExpirDate(Date expirDate) {
		this.expirDate = expirDate;
	}

	public Date getExpirDate() {
		return expirDate;
	}

	public void setServerExpirDate(Date serverExpirDate) {
		this.serverExpirDate = serverExpirDate;
	}

	public Date getServerExpirDate() {
		return serverExpirDate;
	}

	public void setSignDetail(String signDetail) {
		this.signDetail = signDetail;
	}

	public String getSignDetail() {
		return signDetail;
	}

	public void setDevelopLanguage(String developLanguage) {
		this.developLanguage = developLanguage;
	}

	public String getDevelopLanguage() {
		return developLanguage;
	}

	public Long getProjectLeader() {
		return projectLeader;
	}

	public void setProjectLeader(Long projectLeader) {
		this.projectLeader = projectLeader;
	}

	public String getProjectLeaderName() {
		return projectLeaderName;
	}

	public void setProjectLeaderName(String projectLeaderName) {
		this.projectLeaderName = projectLeaderName;
	}

	public void setDelFlag(String delFlag) {
		this.delFlag = delFlag;
	}

	public String getDelFlag() {
		return delFlag;
	}

	@Override
	public String toString() {
		return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).append("id", getId()).append("name", getName())
				.append("customerName", getCustomerName()).append("description", getDescription())
				.append("state", getState()).append("homepage", getHomepage()).append("identifier", getIdentifier())
				.append("color", getColor()).append("customerDetail", getCustomerDetail())
				.append("operationType", getOperationType()).append("gitUrl", getGitUrl())
				.append("serverDetail", getServerDetail()).append("domain", getDomain())
				.append("adminDomain", getAdminDomain()).append("htmlDomain", getHtmlDomain())
				.append("signDate", getSignDate()).append("expirDate", getExpirDate())
				.append("serverExpirDate", getServerExpirDate()).append("signDetail", getSignDetail())
				.append("remark", getRemark()).append("developLanguage", getDevelopLanguage()).append("projectLeader", getProjectLeader()).append("delFlag", getDelFlag())
				.append("createBy", getCreateBy()).append("createTime", getCreateTime())
				.append("updateBy", getUpdateBy()).append("updateTime", getUpdateTime()).toString();
	}
}
